package cmd

import (
	"fmt"
	"dockertools/dockerdemo"
	"github.com/spf13/cobra"
	"os"
)

var (
	address string
	regular string
	savepath string
)

// saveCmd represents the save command
var saveCmd = &cobra.Command{
	Use:   "save",
	Short: "保存镜像在本地",
	Long: `save 命令用于通过正则表达式匹配后将本地 DockerServer 或者远程的 DockerServer 中的镜像保存在本地为文件
			dockertools.exe save -a "172.16.66.101:2375" -r ".*"  -s "./images"	`,
	Run: func(cmd *cobra.Command, args []string) {
		mydocker := dockerdemo.DockerType{HostString: address}

		cli, err := mydocker.InitClient()
		if err != nil {
			fmt.Println(err)
			os.Exit(3)
		}

		mydocker.SaveImageList(cli, regular, savepath)
	},
}

func init() {
	rootCmd.AddCommand(saveCmd)

	saveCmd.Flags().StringVarP(&address, "address", "a", "",
		"用于指定当前连接的远程主机的地址，为空即使用本地的 Docker 连接")
	saveCmd.Flags().StringVarP(&regular, "regular", "r", "",
		"用于指定用于匹配需要保存镜像的正则表达式")
	saveCmd.Flags().StringVarP(&savepath, "savepath", "s", "./images",
		"用于指定镜像的保存路径，默认不指定即保存在当前目录的 images 文件夹中")
}
